package cn.kattomy.shop.user.action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import cn.kattomy.shop.order.service.OrderService;
import cn.kattomy.shop.order.vo.Order;
import cn.kattomy.shop.user.service.UserService;
import cn.kattomy.shop.user.vo.User;

/**
 * 用户模块Action的类
 * @author kattomy
 *
 */
public class UserAction extends ActionSupport implements ModelDriven<User> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private UserService userService;
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	private OrderService orderService;
	public void setOrderService(OrderService orderService) {
		this.orderService = orderService;
	}

	//输入的验证码
	private String checkcode;
	
	public void setCheckcode(String checkcode) {
		this.checkcode = checkcode;
	}
	
	/**
	 * 跳转到注册页面的执行方法
	 */
	public String registPage() {
		
		return "registPage";
	}
	
	/**
	 * 用户注册的方法
	 * @return
	 */
	public String regist(){
		//判断验证码程序
		//从 session 中获取验证码的随机值
		System.out.println("ok~~~~~~~~~~~~~~~");
//		String realCheckcode = (String) ServletActionContext.getRequest().getSession().getAttribute("checkcode");
//		
//		if (!realCheckcode.equalsIgnoreCase(checkcode)) {
//			this.addActionError("验证码输入错误！");
//			return "checkcodeFail";
//		}
		
		userService.save(user);
		this.addActionMessage("注册成功！请前往注册邮箱激活");
		return "msg";
	}

//	/**
//	 * AJAX 进行异步校验用户名的执行方法
//	 * @throws IOException 
//	 */
//	public String findByName() throws IOException {
//		
//		HttpServletResponse response = ServletActionContext.getResponse();
//		response.setContentType("text/html;charset=UTF-8");
//		String username = user.getUsername();
//		boolean flag = userService.validateUsername(username);
//		
//		if (flag) {
//			//查询到该用户:用户名已经存在
//			response.getWriter().println("<font color='red'>用户名已经存在</font>");
//		}else {
//			//没查询到该用户:用户名可以使用
//			response.getWriter().println("<font color='green'>用户名可以使用</font>");
//		}
//		
////		if (flag)) {
////			inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));
////		}else {
////			inputStream = new ByteArrayInputStream("0".getBytes("UTF-8"));
////		}
//		
//		
//		return NONE;
//	}
	
	/**
	 * AJAX 进行异步校验邮箱的执行方法
	 * @throws IOException 
	 */
	public String findByEmail() throws IOException {
		
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html;charset=UTF-8");
		String email = user.getEmail();
		boolean flag = userService.validateEmail(email);
		
		if (flag) {
			//查询到该用户:用户名已经存在
			response.getWriter().println("<font color='red'>邮箱已经注册</font>");
		}else {
			//没查询到该用户:用户名可以使用
			response.getWriter().println("<font color='green'>邮箱可以使用</font>");
		}
		
//		if (flag)) {
//			inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));
//		}else {
//			inputStream = new ByteArrayInputStream("0".getBytes("UTF-8"));
//		}
		
		
		return NONE;
	}
	
	/**
	 * 模型驱动使用的对象
	 */
	private User user = new User();
	@Override
	public User getModel() {
		return user;
	}
	
	/**
	 * 用户激活的方法
	 * @return
	 */
	public String active() {
		//根据激活码激活用户
		if(userService.activateUser(user.getCode())) {
			this.addActionMessage("激活成功：请登录账户");
		}else {
			this.addActionMessage("激活失败：激活码非法 或 已过期");
		}

		return "msg";
	}
	
	/**
	 * 跳转到 登录页面 的方法
	 * @return
	 */
	public String loginPage() {
		return "loginPage";
	}
	
	/**
	 * 登录 的方法
	 * @return
	 */
	public String login() {
		User existUser = userService.login(user);
		if (existUser == null) {
			//登录失败
			this.addActionMessage("登录失败：用户名或密码错误或该用户未激活");
			return "loginPage";
		}else {
			//登录成功
			//将 User 对象完全体存入 Session 中
			ServletActionContext.getRequest().getSession().setAttribute("existUser", existUser);
			//页面跳转
			return "loginSuccess";
		}
		
	}
	/**
	 * 登出 的方法
	 * @return
	 */
	public String quit() {
		ServletActionContext.getRequest().getSession().invalidate();
		return "quit";
	}

	/**
	 * 跳转至个人中心页面
	 * @return
	 */
	public String person() {
		return "person";
	}
	/**
	 * 跳转至个人信息页面
	 * @return
	 */
	public String information() {
		
		return "information";
	}
	/**
	 * 跳转至收货地址页面
	 * @return
	 */
	public String address() {
		return "address";
	}
	/**
	 * 跳转至安全设置页面
	 * @return
	 */
	public String safety() {
		return "safety";
	}
	/**
	 * 跳转至订单管理页面
	 * @return
	 */
	public String order() {
		return "order";
	}
	/**
	 * 跳转至退款售后页面
	 * @return
	 */
	public String change() {
		return "change";
	}
	/**
	 * 跳转至足迹页面
	 * @return
	 */
	public String foot() {
		return "foot";
	}
	/**
	 * 跳转至评价页面
	 * @return
	 */
	public String comment() {
		return "comment";
	}
	/**
	 * 跳转至收藏页面
	 * @return
	 */
	public String collection() {
		return "collection";
	}
	/**
	 * 跳转至消息页面
	 * @return
	 */
	public String news() {
		return "news";
	}
}
